package com.adtech.export.config;

/**
 * 导出excel的配置
 * @author Puzhijun
 *
 */
public class ExportConfiguration {
	/** 默认的临时文件存储地址，是java的临时文件环境变量地址 */
	public static final String DEFAULT_TEMP_FILE_DIC = System.getProperty("java.io.tmpdir");
	/** 每个工作簿(sheet)的最大值 */
	public static final int MAX_DATA_SIZE_PER_SHEET = 65000;
	/** 默认的excel sheet名称 */
	private static final String DEFAULT_EXCEL_SHEET_NAME = "ExportedExcelSheet";
	

	/** 每个工excel的大小 */
	private int dataSizePerExcel = 10000;
	/** 是否分多个excel */
	private boolean isSeparateExcel = false;
	
	/** excel工作簿(sheet)名称 */
	private String excelSheetName = DEFAULT_EXCEL_SHEET_NAME;
	/** excel名称 */
	private String excelFileName;
	/** 每个工作簿的数据量 */
	private int dataSizePerSheet;
	/** 临时excel的存放路径 */
	private String tempExcelStoreLocation = DEFAULT_TEMP_FILE_DIC;
	/** excel版本 */
	private ExcelVersion excelVersion;
	
	/**
	 * 获取每个excel的大小
	 * */
	public int getDataSizePerExcel() {
		return dataSizePerExcel;
	}
	/**
	 * 设置分割的每个excel的数据大小
	 * 只有设置了isSeparateExcel为true时才有效果
	 * 默认为10000,并且能够必须小于或者是等于
	 * @throws IllegalArgumentException 如果设置了分割isSeparateExcel为true
	 * 	并且此属性设置<=0时
	 * */
	public void setDataSizePerExcel(int dataSizePerExcel) {
		if(this.isSeparateExcel() && dataSizePerExcel <= 0) 
			throw new IllegalArgumentException("Sheet's data size must bigger than zero");
		this.dataSizePerExcel = dataSizePerExcel;
	}
	/**
	 * 是否分割excel
	 * 如果设置为true则会
	 * */
	public boolean isSeparateExcel() {
		return isSeparateExcel;
	}
	/**
	 * 设置是否分割excel，默认为true
	 * */
	public void setSeparateExcel(boolean isSeparateExcel) {
		this.isSeparateExcel = isSeparateExcel;
	}
	/**
	 * excel的名称
	 * 
	 * */
	public String getExcelFileName() {
		return excelFileName;
	}
	/**
	 * 设置excel的名称
	 * 如果是大于一个excel则在名称后面依次+1
	 * */
	public void setExcelFileName(String excelFileName) {
		this.excelFileName = excelFileName;
	}
	/**
	 * 获取临时excel的存放路径
	 * */
	public String getTempExcelStoreLocation() {
		return tempExcelStoreLocation;
	}
	/**
	 * 设置临时excel的存放路径
	 * 默认为运行环境的临时目录
	 * */
	public void setTempExcelStoreLocation(String tempExcelStoreLocation) {
		this.tempExcelStoreLocation = tempExcelStoreLocation;
	}
	/**
	 * 获取excel工作簿的名称
	 * */
	public String getExcelSheetName() {
		return excelSheetName;
	}
	/**
	 * 设置excel工作簿名称
	 * */
	public void setExcelSheetName(String excelSheetName) {
		this.excelSheetName = excelSheetName;
	}
	/**
	 * 获取每个工作簿的数据量大小
	 * */
	public int getDataSizePerSheet() {
		return dataSizePerSheet;
	}
	/**
	 * 设置每个工作簿的数据量大小
	 * @throws IllegalArgumentException 小于等于0
	 * @throws IllegalArgumentException 大于65000
	 * */
	public void setDataSizePerSheet(int dataSizePerSheet) {
		if(dataSizePerSheet <= 0) 
			throw new IllegalArgumentException("Data size per sheet must bigger than zero");
		if(dataSizePerSheet > MAX_DATA_SIZE_PER_SHEET)
			throw new IllegalArgumentException("Data size per sheet must sammler than " + MAX_DATA_SIZE_PER_SHEET);
		this.dataSizePerSheet = dataSizePerSheet;
	}
	/**
	 * 获取当前配置的excel版本
	 * */
	public ExcelVersion getExcelVersion() {
		return excelVersion;
	}
	/**
	 * 设置当前配置的excel版本
	 * */
	public void setExcelVersion(ExcelVersion excelVersion) {
		this.excelVersion = excelVersion;
	}
	
}
